home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / gepackte_disketten / 1994 / 08_94_5.dms / 08_94_5.adf / term-4.0-Source.lha / MiscPanel.c < prev    next >
C/C++ Source or Header  |  1994-06-26  |  7KB  |  305 lines

  1. /*
  2. **    MiscPanel.c
  3. **
  4. **    Editing panel for miscellaneous parts of the configuration
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_USE=1000,GAD_CANCEL,GAD_DEFAULT };
  13.  
  14. STATIC LONG __saveds
  15. ShowSize(struct Gadget *SomeGadget,WORD Level)
  16. {
  17.     return(1L << Level);
  18. }
  19.  
  20. BYTE __regargs
  21. MiscPanel(struct Configuration *Config,BYTE *Default)
  22. {
  23.     struct LayoutHandle    *Handle;
  24.     BYTE             Cancel = FALSE;
  25.  
  26.     SaveConfig(Config,PrivateConfig);
  27.  
  28.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  29.         LH_LocaleHook,    &LocaleHook,
  30.     TAG_DONE))
  31.     {
  32.         struct Window    *Window;
  33.         WORD         i,BufferSize;
  34.  
  35.         for(i = 0 ; i < 32 ; i++)
  36.         {
  37.             if((1L << i) == Config -> MiscConfig -> IOBufferSize)
  38.             {
  39.                 BufferSize = i;
  40.  
  41.                 break;
  42.             }
  43.         }
  44.  
  45.         LT_New(Handle,
  46.             LA_Type,    VERTICAL_KIND,
  47.         TAG_DONE);
  48.         {
  49.             LT_New(Handle,
  50.                 LA_Type,    HORIZONTAL_KIND,
  51.                 LA_LabelID,    MSG_V36_0107,
  52.             TAG_DONE);
  53.             {
  54.                 LT_New(Handle,
  55.                     LA_Type,    VERTICAL_KIND,
  56.                 TAG_DONE);
  57.                 {
  58.                     LT_New(Handle,
  59.                         LA_Type,    CHECKBOX_KIND,
  60.                         LA_LabelID,    MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD,
  61.                         LA_BYTE,    &Config -> MiscConfig -> BackupConfig,
  62.                     TAG_DONE);
  63.  
  64.                     LT_New(Handle,
  65.                         LA_Type,    CHECKBOX_KIND,
  66.                         LA_LabelID,    MSG_MISCPANEL_SHOW_FAST_MACROS_GAD,
  67.                         LA_BYTE,    &Config -> MiscConfig -> OpenFastMacroPanel,
  68.                     TAG_DONE);
  69.  
  70.                     LT_New(Handle,
  71.                         LA_Type,    CHECKBOX_KIND,
  72.                         LA_LabelID,    MSG_MISCPANEL_RELEASE_SERIAL_DEVICE_GAD,
  73.                         LA_BYTE,    &Config -> MiscConfig -> ReleaseDevice,
  74.                     TAG_DONE);
  75.  
  76.                     LT_New(Handle,
  77.                         LA_Type,    CHECKBOX_KIND,
  78.                         LA_LabelID,    MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD,
  79.                         LA_BYTE,    &Config -> MiscConfig -> OverridePath,
  80.                     TAG_DONE);
  81.  
  82.                     LT_New(Handle,
  83.                         LA_Type,    CHECKBOX_KIND,
  84.                         LA_LabelID,    MSG_MISCPANEL_USE_AUTO_UPLOAD_PANEL_GAD,
  85.                         LA_BYTE,    &Config -> MiscConfig -> AutoUpload,
  86.                     TAG_DONE);
  87.  
  88.                     LT_EndGroup(Handle);
  89.                 }
  90.  
  91.                 LT_New(Handle,
  92.                     LA_Type,    VERTICAL_KIND,
  93.                 TAG_DONE);
  94.                 {
  95.                     LT_New(Handle,
  96.                         LA_Type,    CHECKBOX_KIND,
  97.                         LA_LabelID,    MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD,
  98.                         LA_BYTE,    &Config -> MiscConfig -> SetArchivedBit,
  99.                     TAG_DONE);
  100.  
  101.                     LT_New(Handle,
  102.                         LA_Type,    CHECKBOX_KIND,
  103.                         LA_LabelID,    MSG_MISCPANEL_TRANSFER_ICONS_GAD,
  104.                         LA_BYTE,    &Config -> MiscConfig -> TransferIcons,
  105.                     TAG_DONE);
  106.  
  107.                     LT_New(Handle,
  108.                         LA_Type,    CHECKBOX_KIND,
  109.                         LA_LabelID,    MSG_MISCPANEL_TRANSFER_METER_GAD,
  110.                         LA_BYTE,    &Config -> MiscConfig -> PerfMeter,
  111.                     TAG_DONE);
  112.  
  113.                     LT_New(Handle,
  114.                         LA_Type,    CHECKBOX_KIND,
  115.                         LA_LabelID,    MSG_MISCPANEL_CREATE_ICONS_GAD,
  116.                         LA_BYTE,    &Config -> MiscConfig -> CreateIcons,
  117.                     TAG_DONE);
  118.  
  119.                     LT_New(Handle,
  120.                         LA_Type,    CHECKBOX_KIND,
  121.                         LA_LabelID,    MSG_MISCPANEL_SIMPLE_IO_GAD,
  122.                         LA_BYTE,    &Config -> MiscConfig -> SimpleIO,
  123.                     TAG_DONE);
  124.  
  125.                     LT_EndGroup(Handle);
  126.                 }
  127.  
  128.                 LT_EndGroup(Handle);
  129.             }
  130.  
  131.             LT_New(Handle,
  132.                 LA_Type,    VERTICAL_KIND,
  133.                 LA_LabelID,    MSG_V36_0108,
  134.             TAG_DONE);
  135.             {
  136.                 LT_New(Handle,
  137.                     LA_Type,        SLIDER_KIND,
  138.                     LA_LabelID,        MSG_MISCPANEL_PROGRAM_PRIORITY_GAD,
  139.                     GTSL_Min,        -128,
  140.                     GTSL_Max,         127,
  141.                     GTSL_LevelFormat,    "%4ld",
  142.                     LA_BYTE,        &Config -> MiscConfig -> Priority,
  143.                 TAG_DONE);
  144.  
  145.                 LT_New(Handle,
  146.                     LA_Type,        CYCLE_KIND,
  147.                     LA_LabelID,        MSG_MISCPANEL_IDENTIFY_FILES_GAD,
  148.                     LACY_FirstLabel,    MSG_MISCPANEL_IDENTIFY_IGNORE_TXT,
  149.                     LACY_LastLabel,        MSG_MISCPANEL_IDENTIFY_SOURCE_TXT,
  150.                     LA_BYTE,        &Config -> MiscConfig -> IdentifyFiles,
  151.                 TAG_DONE);
  152.  
  153.                 LT_New(Handle,
  154.                     LA_Type,        SLIDER_KIND,
  155.                     LA_LabelID,        MSG_V36_1810,
  156.                     LA_WORD,        &BufferSize,
  157.                     GTSL_Min,        12,
  158.                     GTSL_Max,        20,
  159.                     GTSL_DispFunc,        ShowSize,
  160.                     GTSL_LevelFormat,    LocaleBase ? "%7lD" : "%7ld",
  161.                 TAG_DONE);
  162.  
  163.                 LT_EndGroup(Handle);
  164.             }
  165.  
  166.             LT_New(Handle,
  167.                 LA_Type,VERTICAL_KIND,
  168.             TAG_DONE);
  169.             {
  170.                 LT_New(Handle,
  171.                     LA_Type,    XBAR_KIND,
  172.                     LAXB_FullSize,    TRUE,
  173.                 TAG_DONE);
  174.  
  175.                 LT_EndGroup(Handle);
  176.             }
  177.  
  178.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  179.                 LAGR_SameSize,    TRUE,
  180.                 LAGR_Spread,    TRUE,
  181.             TAG_DONE);
  182.             {
  183.                 LT_New(Handle,
  184.                     LA_Type,    BUTTON_KIND,
  185.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  186.                     LA_ID,        GAD_USE,
  187.                     LABT_ReturnKey,    TRUE,
  188.                     LABT_ExtraFat,    TRUE,
  189.                 TAG_DONE);
  190.  
  191.                 if(Default)
  192.                 {
  193.                     LT_New(Handle,
  194.                         LA_Type,    BUTTON_KIND,
  195.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  196.                         LA_ID,        GAD_DEFAULT,
  197.                         LABT_ExtraFat,    TRUE,
  198.                     TAG_DONE);
  199.                 }
  200.  
  201.                 LT_New(Handle,
  202.                     LA_Type,    BUTTON_KIND,
  203.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  204.                     LA_ID,        GAD_CANCEL,
  205.                     LABT_EscKey,    TRUE,
  206.                     LABT_ExtraFat,    TRUE,
  207.                 TAG_DONE);
  208.  
  209.                 LT_EndGroup(Handle);
  210.             }
  211.  
  212.             LT_EndGroup(Handle);
  213.         }
  214.  
  215.         if(Window = LT_Layout(Handle,LocaleString(MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  216.             LAWN_HelpHook,        &GuideHook,
  217.             WA_DepthGadget,        TRUE,
  218.             WA_CloseGadget,        TRUE,
  219.             WA_DragBar,        TRUE,
  220.             WA_RMBTrap,        TRUE,
  221.             WA_Activate,        TRUE,
  222.         TAG_DONE))
  223.         {
  224.             struct IntuiMessage    *Message;
  225.             BOOLEAN             Done = FALSE;
  226.             ULONG             MsgClass,
  227.                          MsgQualifier;
  228.             UWORD             MsgCode;
  229.             struct Gadget        *MsgGadget;
  230.  
  231.             GuideContext(CONTEXT_MISC);
  232.  
  233.             PushWindow(Window);
  234.  
  235.             LT_ShowWindow(Handle,TRUE);
  236.  
  237.             do
  238.             {
  239.                 if(Wait(PORTMASK(Window -> UserPort) | SIG_BREAK) & SIG_BREAK)
  240.                 {
  241.                     SaveConfig(PrivateConfig,Config);
  242.  
  243.                     break;
  244.                 }
  245.  
  246.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(Window -> UserPort))
  247.                 {
  248.                     MsgClass    = Message -> Class;
  249.                     MsgQualifier    = Message -> Qualifier;
  250.                     MsgCode        = Message -> Code;
  251.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  252.  
  253.                     GT_ReplyIMsg(Message);
  254.  
  255.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  256.  
  257.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  258.                     {
  259.                         SaveConfig(PrivateConfig,Config);
  260.  
  261.                         Done = TRUE;
  262.                     }
  263.  
  264.                     if(MsgClass == IDCMP_GADGETUP)
  265.                     {
  266.                         switch(MsgGadget -> GadgetID)
  267.                         {
  268.                             case GAD_USE:
  269.  
  270.                                 Config -> MiscConfig -> IOBufferSize = 1L << BufferSize;
  271.  
  272.                                 Done = TRUE;
  273.                                 break;
  274.  
  275.                             case GAD_CANCEL:
  276.  
  277.                                 SaveConfig(PrivateConfig,Config);
  278.  
  279.                                 Cancel = Done = TRUE;
  280.                                 break;
  281.  
  282.                             case GAD_DEFAULT:
  283.  
  284.                                 *Default = TRUE;
  285.  
  286.                                 Done = TRUE;
  287.                                 break;
  288.                         }
  289.                     }
  290.                 }
  291.             }
  292.             while(!Done);
  293.  
  294.             PopWindow();
  295.         }
  296.  
  297.         LT_DeleteHandle(Handle);
  298.     }
  299.  
  300.     if(Default)
  301.         return((BYTE)(!Cancel));
  302.     else
  303.         return((BYTE)memcmp(PrivateConfig -> MiscConfig,Config -> MiscConfig,sizeof(struct MiscSettings)));
  304. }
  305.